﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Registro.Compras.Data.Entities;

namespace Registro.Compras.Data.Business
{
    public class Base1Business
    {
        public static IList<Base1> GetListByFilter(string filter)
        {
            using (RegistroComprasDbContext ctx = new RegistroComprasDbContext())
            {
                return ctx.Base1s.Where(u => u.Serie.Contains(filter)).Include(t => t.Tabla10)
                    .Include(t => t.Encabezado).Include(t => t.Proveedor).Include(t => t.BaseImponible).ToList();
            }
        }

        public static Base1 Create(Base1 Base1)
        {
            using (RegistroComprasDbContext ctx = new RegistroComprasDbContext())
            {
                Base1.Tabla10 = ctx.Tabla10s.Find(Base1.Tabla10Id);
                Base1.Encabezado = ctx.Encabezados.Find(Base1.EncabezadoId);
                Base1.Proveedor = ctx.Proveedores.Find(Base1.ProveedorId);
                Base1.BaseImponible = ctx.BaseImponibles.Find(Base1.BaseImponibleId);
                Base1 Base1DB = ctx.Base1s.Add(Base1);

                ctx.SaveChanges();
                return Base1DB;
            }
        }
        public static Base1 Update(Base1 Base1)
        {
            using (RegistroComprasDbContext ctx = new RegistroComprasDbContext())
            {
                Base1.Tabla10 = ctx.Tabla10s.Find(Base1.Tabla10Id);
                Base1.Encabezado = ctx.Encabezados.Find(Base1.EncabezadoId);
                Base1.Proveedor = ctx.Proveedores.Find(Base1.ProveedorId);
                Base1.BaseImponible = ctx.BaseImponibles.Find(Base1.BaseImponibleId);
                ctx.Entry(Base1).State = EntityState.Modified;

                ctx.SaveChanges();
                return Base1;
            }
        }
        public static Base1 GetById(int id)
        {
            using (RegistroComprasDbContext ctx = new RegistroComprasDbContext())
            {
                Base1 Base1DB = ctx.Base1s.Find(id);
                if (Base1DB == null)
                {
                    throw new Exception("Base1 not found in data base");
                }
                return Base1DB;
            }
        }
        public static void Delete(int id)
        {
            using (RegistroComprasDbContext ctx = new RegistroComprasDbContext())
            {
                Base1 Base1DB = ctx.Base1s.Find(id);
                if (Base1DB == null)
                {
                    throw new Exception("Base1 not found in data base");
                }
                ctx.Base1s.Remove(Base1DB);
                ctx.SaveChanges();

            }
        }
    }
}